// pages/projectadd/add.js
const app = getApp();
const util = require('../../utils/util.js');
import {publishOrder} from '../../apis/order';
Page({
  /**
   * 页面的初始数据
   */
  data: {
    showButton: true,
    longitude: '',
    latitude: '',
    region: ['', '', ''],
    customItem: '全部',
    detailAddr: '',
    fileList: [],
    display: false,
    show: false,
    curTime: util.getOneHourLate(),
    format: '',
    url: '',
    tag: false,
    showTime: false,
    showRegion: true,
    remark: "",
    minDate: new Date().getTime(),//最小时间
    //时间-显示赋值
    formatter(type, value) {
      if (type === 'year') {
        return `${value}年`;
      }
      if (type === 'month') {
        return `${value}月`;
      }
      if (type === 'day') {
        return `${value}日`;
      }
      if (type === 'hour') {
        return `${value}时`;
      }
      if (type === 'minute') {
        return `${value}分`;
      }
      return value;
    }
  },
  
  // 照片上传
  afterRead(event) {
    const fileList = this.data.fileList;
    if (fileList != null && fileList.length > 0) {
      wx.showToast({
        title: '只能上传一张图片',
      })
    }
    const { file } = event.detail;
    const that = this
    wx.showLoading({
      title: '上传中...',
    })
    const url = app.globalData.baseUrl + '/file/upload';
    wx.uploadFile({
      url: url,
      filePath: file.url,
      name: 'file',
      header: {
        token: app.globalData.token
      },
      success(res) {
        // 上传完成需要更新 fileList
        let obj = JSON.parse(res.data)
        fileList.push({
          url: obj.data,
          type:"image"
        })
        that.setData({ 
          fileList: fileList,
          url: obj.data
        });
        wx.hideLoading()
      },fail(res) {
        wx.hideLoading();
        wx.showToast({
          title: '文件上传失败',
        })
      }
    });
  },
  // 删除照片
  delete(event) {
    this.setData({
      fileList: [],
      url: ''
    })
  },

  // 获取定位信息
  getLocation() {
    wx.showLoading({
      title: '获取位置中...',
    })
    const that = this;
    wx.getLocation({
      type: 'gcj02',
      success(res) {
        that.setData({
          showButton: false,
          longitude: res.longitude,
          latitude: res.latitude,
        })
      },
      fail(res) {
        wx.showToast({
          title: '获取定位信息失败，请重试',
          icon: 'none'
        })
      },
      complete(res) {
        wx.hideLoading();
      }
    })
  },

  // 获取详细地址变化
  detailAddrOnChange(event) {
    this.setData({
      detailAddr: event.detail,
    });
  },

  // 获取省市区变化
  bindRegionChange: function (e) {
    this.setData({
      region: e.detail.value,
      showRegion: false,
    })
  },

  //时间-当值变化时触发的事件start
  onInput(event) {
    var newTime = new Date(event.detail);
    this.setData({
      curTime: newTime,
      format: util.formatTime(newTime)
    });
  },

  //时间-弹出框
  showPopup() {
    this.setData({ show: true });
  },
  //时间-弹出框关闭
  onClose() {
    this.setData({ show: false });
  },
  // 时间-确定按钮
  confirm(e) {
    var newTime = new Date(e.detail);
    this.setData({
      curTime: newTime,
      format: util.formatTime(newTime),
      show: false,
      showTime: true
    });
  
  },

  remarkOnChange(event) {
    this.setData({
      remark: event.detail,
    });
  },
  
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 表单提交
   */
  async formSubmit(e) {
    const d = e.detail;
    let _this = this;
    let values = {
      subscriptionTime: this.data.format,
      longitude: this.data.longitude,
      latitude: this.data.latitude,
      province: this.data.region[0],
      city: this.data.region[1],
      town: this.data.region[2],
      detailAddr: this.data.detailAddr,
      url: this.data.url,
      remark: this.data.remark
    }
    // 表单验证
    if (!_this.validation(values)) {
      return false;
    }
    const res = await publishOrder(values);
    if (res.code == 200) {
      wx.showToast({
        title: '发布成功，请耐心等待',
        icon: 'none',
        duration: 1000,
        success(res) {
          setTimeout(function() {
            wx.redirectTo({
              url: '/pages/index/index',
            })
          }, 1000);
        }
      })
    } else {
      wx.showToast({
        title: res.message,
        icon: 'none'
      })
    }
  },

  /**
   * 表单验证
   */
  validation: function (values) {
    if (values.subscriptionTime.length < 1) {
      wx.showToast({
        title: '请选择上门时间',
        icon: 'none'
      })
      return false;
    }
    if (values.longitude.length < 1 || values.latitude.length < 1) {
      wx.showToast({
        title: '请获取定位信息',
        icon: 'none'
      })
      return false;
    }
    if (values.province.length < 1 || values.city.length < 1 || values.town.length < 1) {
      wx.showToast({
        title: '请选择省市区',
        icon: 'none'
      })
      return false;
    }
    if (values.detailAddr.length < 1) {
      wx.showToast({
        title: '请填写详细地址',
        icon: 'none'
      })
      return false;
    }
    if (values.remark.length < 1) {
      wx.showToast({
        title: '请填写订单备注',
        icon: 'none'
      })
      return false;
    }
    if (values.url.length < 1) {
      wx.showToast({
        title: '请上传废品图片',
        icon: 'none'
      })
      return false;
    }
    return true;
  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})